興奮冷めやらぬ!try! Swift After Talks Day1 を開催しました! #tryswift_aftertalks

興奮冷めやらぬ!try! Swift After Talks Day1 を開催しました! #tryswift_aftertalks

Clock Icon2018.03.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

おばんです、Watch Dogs2というハッカーがテーマになっているゲームを始めてしまい、技術書典の原稿が危うい田中です。

今日は、先日開催されたtry! Swiftの「後」イベントとして開催するtry! Swift After Talksに参加(運営・開催)してきましたので、そのレポートをまとめます!

配信と動画公開

当日の様子はYoutubeで配信されました。動画としても公開される予定です!

try! Swift After Talksとは?

公式ページより引用。

今年の try! Swift Tokyo 2018 にもたくさんのCfPの応募をいただきました。主催者で選考を行いましたが、枠数には限りがあり、泣く泣く見送るCfPもありました。そこでこのイベントでは、東京のSwift developer達が選ぶ、try! Swift で聞きたかったLTを集めました。2日間かけてtry!Swift Tokyo 2018の余韻を楽しみましょう!

今年のtry! swiftに応募されたLTは86本!枠から溢れてしまったCfPが多くて悲しかったのでこのイベントを開催しました!#tryswift_aftertalks pic.twitter.com/GkWWCpdgTp

— ダンボー田中@技術書典4 (@ktanaka117) 2018年3月8日

発表

各発表はOrganizerの投票によって決められています!

「今日から始める Swift Package Manager で作るCLIツール」 Yusuke Hosonuma

CURATED BY TAKASEK 七島 偉之

  • ターミナルからXcodeを開くxcode-openというツールを作りました。
    • https://github.com/YusukeHosonuma/xcode-open
  • Swift Package Manager対応もしています
  • Swift Package Managerについての知見を紹介します!
  • Swift Package Managerとは
    • Swift標準のパッケージマネージャ
    • Swiftで書かれている
    • など
  • なぜSwiftPMで作ったか?
    • なんとなく!
    • UIKitに支配されない世界を見たかった
  • Package.swift
    • targetsのところにもdependenciesを記述するところがあるので、注意が必要
  • Makefile
    • コマンドがややこしいので、Makefileを作ってコマンドを簡易化した

「3Dプログラミングへの招待 〜グラフィックスパイプライン〜」 Youichi Takatsu

CURATED BY 後藤 玲子

  • 3Dの低レイヤーの話をします
  • GRAPHICS PIPELINEの話をします
  • 3Dデータとはなにか?
    • 3Dデータで表現できるのは三つだけ
    • それをPremitiveという
    • 3Dデータは大量の頂点
  • Vertex Processing 頂点処理
    • Coordinate Transformation 座標変換
    • Clipping
  • Primitive Assembly
    • 頂点を集めてPrimitiveを作る
  • Rasterization
    • Primitiveをブロック状の単位に格納する
    • ブロックのことをFragmentと呼ぶ
  • Fragment Processing
    • テクスチャ処理をここで行う

「RIBs を用いたモバイルアーキテクチャ設計」 Naoki Ishikawa

CURATED BY 七島 偉之

  • uber/RIBsというフレームワークの話
  • RIBsとは?
    • iOS/Androidでアーキテクチャを共有できるフレームワーク
    • テスタビリティが高い
    • Uberの百人以上のエンジニアがスケーラブルに使えるフレームワーク
  • Uberはなんでこれを作ったか?
    • Problem
      • MVCのmassive view controller
    • Try
      • 乗車体験は高いままを維持したい
  • どういうユニットが存在するのか?
    • RIBsはアプリの状態をツリー構造で全て表す
      • Router
        • 自身のRIBに対してattach/detachすることを責務とする
      • Interactor
        • Viewに対するビジネスロジックをすべて受け持つ
      • Builder
        • RIBの依存関係や初期化などを担当する
      • Presenter
        • InteractorとViewの橋渡しをする
      • View
        • iOSにおけるViewControllerが当てはまる
  • まとめ
    • コードの独立化がはかれる
    • 書き手間の情報も統一もできる

「World of No Interface Builder」 Satoshi Nagasaka

CURATED BY 熊本 和正

  • pairs JP teamではInterface Builderを使っていない
    • Auto Layoutはコードで書いている
  • なぜInterface Builderを使わない判断をしたのか?
    • チーム開発とInterface Builderの相性が悪いから
    • xmlのコンフリクトが起きたから。これレビューしたいですか?
  • コードレイアウトをしてどうなったか?
    • レビューがしやすくなった
    • Auto Layoutのミスが発見しやすくなった
    • コンフリクト時のストレスが減った
  • attributesもコードだけ!
  • コードが増えることを懸念していたが?
    • デザイナーとViewのまとまりについて話すことで、そんなに増えなかった印象
  • コードレイアウトするときに使うツール
  • Interface Builderをいつ使うべきか?
    • 「Interface Builder絶対ダメ!」と言うわけではない
    • 開発にスピードを出したいときには向いている
    • チームのスキルも鑑みる。コードレイアウトはViewのライフサイクルについてちゃんと知っていないと詰まることもあるので

「The swifter way of A/B testing implementation」 Kouhei Takamatsu

CURATED BY TAKASEK

  • 製品をよくしていくためにABテストを使ってますよね?
  • 色々なめんどくさいことがある!
    • 使い捨てのfunc
    • 既存ロジックを汚染する分岐
    • ぶらりABテスト除去の旅
    • etc
  • たどり着いた結論
    • 臭いものには蓋
  • ABTesterProtocolが、どのABテストを実行するのかということを意識しなくて済ませてくれる

「Image as a value type」 Yuta Koshizawa

CURATED BY 松館 大輝

  • まだ僕がObjective-Cを書いていた頃、僕には夢がありました。
  • Immutable image classをつくることでした
  • Mutable Classの場合、シグネチャだけではどのような実装が行われているかわからない
  • 毎秒何十枚もの画像クラスを再生成するのは無駄
  • Swiftでは標準ライブラリのほぼ全てがValue Typesだった
  • Swiftによって理想の画像クラスが作れるのでは無いか
  • koher/EasyImagy: Makes it easy to process images in Swift
  • キーボードのネガポジ反転させるサンプル
  • まとめ
    • Value TypeはMutable ClassとImmutable Classのいいとこ取りをしたようなもの

「Result V.S. Result<T, E>」 Yasuhiro Inami

CURATED BY 七島 偉之 松館 大輝

  • Result<T, E>Result<T> の比較
    • 良いところ
      • Error"型"を含む
      • エラードメインを示せる
      • エラーパターンマッチングができる
  • NoErrorとは?
    • 値を生成できない (e.g. Never)
    • NoErrorもエラーの一種である
  • NoErrorのつかいどころ
    • ReactiveSwiftの Signal<Value, NoError>
      • エラーを返さないObservable
    • Result型の Result<Value, NoError>
      • 成功のみを表す
  • let trySwift: Result<Emoji, NoError> = .success(?)

懇親会

Day 1のスポンサーは 株式会社DeNA さん でした、ありがとうございます!ベイスターズビールが美味しかったです!

try! Swiftが参加者同士の交流する場を作るために、休憩時間を重視していたのを尊重して、After Talksでも休憩時間や懇親会での交流がとても楽しかったです!

まとめ

トーク一つが10分という短めのトークであるにもかかわらず、一本一本、全てのトークの濃度がめためたに濃くてためになる内容でした!try! Swift後一週間という急なスケジュールにもかかわらず、参加いただいた皆様、登壇いただいたスピーカーの皆様、ありがとうございました!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.